package org.madmac.join;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;


import org.madmac.ip.Ip;
import org.wakeful.conn.Connection;

public class IpXFaixaIp extends Ip{

	private String desc_faixaIp;
	
	private static IpXFaixaIp instance;
	
	private IpXFaixaIp () {
		
	}

	public String getDesc_faixaIp() {
		return desc_faixaIp;
	}

	public void setDesc_faixaIp(String desc_faixaIp) {
		this.desc_faixaIp = desc_faixaIp;
	}
	
	public static IpXFaixaIp getInstance () {
		
		if (instance == null) {
			instance = new IpXFaixaIp();
		}
		return instance;
	}
	
	public List<IpXFaixaIp> selectAllYouWant (int search_faixa) throws SQLException, ClassNotFoundException, Exception {
		
		List<IpXFaixaIp> lista = new ArrayList<IpXFaixaIp>();
		
		java.sql.Connection conn = Connection.getInstance();
		Statement stmt = conn.createStatement();
		String sql = "SELECT ip.ip, ip.id_faixa_ip, ip.livre, f.descricao ";
		sql += "FROM madmac.ip, madmac.faixa_ip f ";
		sql += "WHERE ip.id_faixa_ip = f.id_faixa_ip ";
				
		if (search_faixa != 0) {
			sql += "AND f.id_faixa_ip = " + search_faixa + " "; 
		}
		
		sql += "ORDER BY ip.ip, f.descricao ";
		
		
		ResultSet rs = null;
		try {
			rs = stmt.executeQuery(sql);
		} catch (Exception e) {
			return null;
		}
		
		while (rs.next()) {
			
			IpXFaixaIp ixf = new IpXFaixaIp();
			
			String ip = rs.getString("ip");
			boolean livre = rs.getBoolean("livre");
			int id_faixa_ip = rs.getInt("id_faixa_ip");
			String descricao = rs.getString("descricao");
			
			ixf.setIp(ip);
			ixf.setIp_usado(livre);
			ixf.setId_faixa_ip(id_faixa_ip);
			ixf.setDesc_faixaIp(descricao);
			
			lista.add(ixf);
		}
		
 		return lista;
	}
}
